iT邦幫忙

2022 iThome 鐵人賽

DAY 17
0
自我挑戰組

用 30 天和 ASP.NET Core 打造一個活動報名管理系統系列 第 17

ASP.NET Core - 活動報名管理系統:Day17 讓 View 顯示 Enum 的文字

  • 分享至 

  • xImage
  •  

前言

一直到現在,在瀏覽活動列表時,活動種類總是顯示 CategoryId 的數字,而不是 Enum,今天就要來解決這件事,讓列表顯示更完整。

View

首先需要新增引入 Enum 的 namespace:

更改欄位名稱,將原本的 DisplayNameFor 換成 @Html.DisplayName("活動類別")

但這樣有個問題,其他地方有使用到 Events 這個 Model 的 View 時,就必須手動再更改一次,非常的重工,有個更好的做法是在 Model 的 Property 加入 Display 這個 Attribute:

如此就不用將 View 的 DisplayNameFor 修改掉,而且這樣的設定會套用到所有的 View,如此就省去許多重工的時間。

在到 foreach 迴圈內,在 CategoryId 的部分,加入 @Enum.GetName(typeof(EventsCategoryEnum),item.CategoryId) 的 Code,Enum.GetName() 的參數,第一個參數要指定是使用哪一個 Enum,這裡放 EventsCategoryEnum
第二個參數則是 value,這裡將取得到的 Events.CategoryId 放進去:

省一點寫 namespace 的時間

在 View 中要 using 時,總是都要寫出完整的專案名稱等,我們可以在 Views 資料夾中,_ViewImports.cshtml 寫入 namespace:

Line3, 4 是我們手動引入的,再來回到 Index.cshtml 中:

分別移除了 ViewModel namespace 完整的專案名稱與 @using EventsSystem_iThome.Enum

使用 EventsCategoryEnum 時,不會有錯誤,代表是有被正常引用的:

實際結果

可以看到欄位名稱與活動類型名稱都正確顯示出來了

本日結語

不論是要選擇哪些資料欄位也好,或是將 ID 轉變為文字名稱也好,這都使我們的列表顯示更完整了。

明天預計會將所有 CRUD 的 Function 寫完整,完整的使用 Repository。

我們明天見 ?


上一篇
ASP.NET Core - 活動報名管理系統:Day16 Repository Pattern 與 DI 的便利:正式、測試資料切換
下一篇
ASP.NET Core - 活動報名管理系統:Day18 將 CRUD 的前後端寫好 - 1
系列文
用 30 天和 ASP.NET Core 打造一個活動報名管理系統30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言